#include <plug_common.h>

luabind::scope register_wxAppConsole() {
	using namespace luabind;
	return
		class_< wxAppConsole, wxEvtHandler >("wxAppConsole")
			.def("CallOnInit",(bool(wxAppConsole::*)())&wxAppConsole::CallOnInit)
			.def("OnInit",(bool(wxAppConsole::*)())&wxAppConsole::OnInit)
			.def("OnRun",(int(wxAppConsole::*)())&wxAppConsole::OnRun)
			.def("OnExit",(int(wxAppConsole::*)())&wxAppConsole::OnExit)
			.def("CleanUp",(void(wxAppConsole::*)())&wxAppConsole::CleanUp)
			.def("OnFatalException",(void(wxAppConsole::*)())&wxAppConsole::OnFatalException)
			.def("Exit",(void(wxAppConsole::*)())&wxAppConsole::Exit)
			.def("GetAppName",(wxString(wxAppConsole::*)() const)&wxAppConsole::GetAppName)
			.def("SetAppName",(void(wxAppConsole::*)(const wxString&))&wxAppConsole::SetAppName)
			.def("GetAppDisplayName",(wxString(wxAppConsole::*)() const)&wxAppConsole::GetAppDisplayName)
			.def("SetAppDisplayName",(void(wxAppConsole::*)(const wxString&))&wxAppConsole::SetAppDisplayName)
			.def("GetClassName",(wxString(wxAppConsole::*)() const)&wxAppConsole::GetClassName)
			.def("SetClassName",(void(wxAppConsole::*)(const wxString&))&wxAppConsole::SetClassName)
			.def("GetVendorName",(const wxString&(wxAppConsole::*)() const)&wxAppConsole::GetVendorName)
			.def("SetVendorName",(void(wxAppConsole::*)(const wxString&))&wxAppConsole::SetVendorName)
			.def("GetVendorDisplayName",(const wxString&(wxAppConsole::*)() const)&wxAppConsole::GetVendorDisplayName)
			.def("SetVendorDisplayName",(void(wxAppConsole::*)(const wxString&))&wxAppConsole::SetVendorDisplayName)
			.def("FilterEvent",(int(wxAppConsole::*)(wxEvent&))&wxAppConsole::FilterEvent)
			.def("OnUnhandledException",(void(wxAppConsole::*)())&wxAppConsole::OnUnhandledException)
			.def("OnExceptionInMainLoop",(bool(wxAppConsole::*)())&wxAppConsole::OnExceptionInMainLoop)
			.def("ProcessPendingEvents",(void(wxAppConsole::*)())&wxAppConsole::ProcessPendingEvents)
			.def("HasPendingEvents",(bool(wxAppConsole::*)() const)&wxAppConsole::HasPendingEvents)
			.def("SuspendProcessingOfPendingEvents",(void(wxAppConsole::*)())&wxAppConsole::SuspendProcessingOfPendingEvents)
			.def("ResumeProcessingOfPendingEvents",(void(wxAppConsole::*)())&wxAppConsole::ResumeProcessingOfPendingEvents)
			.def("RemovePendingEventHandler",(void(wxAppConsole::*)(wxEvtHandler*))&wxAppConsole::RemovePendingEventHandler)
			.def("AppendPendingEventHandler",(void(wxAppConsole::*)(wxEvtHandler*))&wxAppConsole::AppendPendingEventHandler)
			.def("DelayPendingEventHandler",(void(wxAppConsole::*)(wxEvtHandler*))&wxAppConsole::DelayPendingEventHandler)
			.def("DeletePendingEvents",(void(wxAppConsole::*)())&wxAppConsole::DeletePendingEvents)
			.def("ScheduleForDestruction",(void(wxAppConsole::*)(wxObject*))&wxAppConsole::ScheduleForDestruction)
			.def("IsScheduledForDestruction",(bool(wxAppConsole::*)(wxObject*) const)&wxAppConsole::IsScheduledForDestruction)
			.def("Pending",(bool(wxAppConsole::*)())&wxAppConsole::Pending)
			.def("Dispatch",(bool(wxAppConsole::*)())&wxAppConsole::Dispatch)
			.def("MainLoop",(int(wxAppConsole::*)())&wxAppConsole::MainLoop)
			.def("ExitMainLoop",(void(wxAppConsole::*)())&wxAppConsole::ExitMainLoop)
			.def("Yield",(bool(wxAppConsole::*)(bool))&wxAppConsole::Yield)
			.def("WakeUpIdle",(void(wxAppConsole::*)())&wxAppConsole::WakeUpIdle)
			.def("ProcessIdle",(bool(wxAppConsole::*)())&wxAppConsole::ProcessIdle)
			.def("UsesEventLoop",(bool(wxAppConsole::*)() const)&wxAppConsole::UsesEventLoop)
			.def("OnAssertFailure",(void(wxAppConsole::*)(const wxChar*, int, const wxChar*, const wxChar*, const wxChar*))&wxAppConsole::OnAssertFailure)
			.def("OnAssert",(void(wxAppConsole::*)(const wxChar*, int, const wxChar*, const wxChar*))&wxAppConsole::OnAssert)
			.def("IsMainLoopRunning",(bool(*)())&wxAppConsole::IsMainLoopRunning)
			.def("CheckBuildOptions",(bool(*)(const char*, const char*))&wxAppConsole::CheckBuildOptions)
			.def("GetInstance",(wxAppConsole*(*)())&wxAppConsole::GetInstance)
			.def("SetInstance",(void(*)(wxAppConsole*))&wxAppConsole::SetInstance)
;
}

